package xkp.lesson2;

import java.math.BigDecimal;

public class Demo2 {
	public static void main(String[] args) {
		double a = 0.02;
		double b = 0.03;
		System.out.println(b-a);
		//在精确运算中这种问题不应该发生
		
		Double double1 = 0.02;
		Double double2 = 0.02;
		System.out.println(double2.equals(double1));
		System.out.println(double2-double1);
		//使用包装类之后该问题依然没有解决
		//比如在银行业务中，这种问题是绝对不能发生的
		//如何解决上述问题
		//在java中为了精确计算，专门提供了一个大数类型
		BigDecimal bigDecimal1 = new BigDecimal("0.02");
		//在java底层存储时0.03这个数字不是准确的
		BigDecimal bigDecimal2 = new BigDecimal("0.03");
		BigDecimal bigDecimal3 = bigDecimal2.subtract(bigDecimal1);
		System.out.println(bigDecimal3);
		//如果以后遇到金额问题，切记不要去使用double、Double
		//建议使用BigDecimal
		//在构建对象时使用字符串。
		//Long long1 = 9999999999999999999999999999999999999999999999999;
		BigDecimal aaa = new BigDecimal("99999999999999999999999999999999999999999");
		BigDecimal bbb = new BigDecimal("99999999999999999999999999999999999999999");
		System.out.println(aaa.add(bbb).toString());
	}
}
